# -*- coding: utf-8 -*-
# @File    : predict.py
# @Author  : AaronJny
# @Date    : 2019/11/26
# @Desc    : 指定一个训练好的模型参数，让模型随机选出下期彩票号码
import sys, os
sys.path.append('D:/tensorflow/lottery/lotto-master')


from dataset import LottoDataSet
from models import model
import settings
import utils
import os

def predict_dlt(predict_num):
    # 读取文件目录中的文件
    list_dir = os.listdir('./checkpoints')
    list_index = [[int(i[i.index('t_') + 2:len(i)]), i] for i in list_dir]
    # 加载模型参数
    model.load_weights('./checkpoints/' + max(list_index)[1])
    # 构建数据集
    lotto_dataset = LottoDataSet()
    # 提取倒数第MAX_STEPS期到最近一期的数据，作为预测的输入
    x = lotto_dataset.predict_data
    # 开始预测
    predicts = model.predict(x, batch_size=1)
    # 存放选号结果的列表
    result = []
    # 存放每个球的概率分布的list
    probabilities = [predict[0] for predict in predicts]
    # print(probabilities)
    # 总共要选出settings.PREDICT_NUM注彩票
    for i in range(predict_num):
        # 根据概率分布随机选择一个序列
        balls = utils.select_seqs(probabilities)
        # 加入到选号列表中,注意，我们需要把全部的数字+1，恢复原始的编号
        result.append([ball + 1 for ball in balls])
    # 输出要买的彩票序列
    print('本次预测结果如下：')
    list = []
    for index, balls in enumerate(result, start=1):
        print('第{}注 {}'.format(index, ' '.join(map(str, balls))))
        list.append('第{}注 {}'.format(index, ' '.join(map(str, balls))) + '\n')
    return list

